package factory;

interface Move{
    void go();
}

class Car implements Move{

    @Override
    public void go() {
        System.out.println("car go");
    }
}

class Boom implements Move{

    @Override
    public void go() {
        System.out.println("boom go");
    }
}

class CreateTool{
    public Move createCar(){
        // 加入权限
        // 日志等等
        return new Car();
    }

    public Move createBoom(){
        return new Boom();
    }
}

class CarFactory{
    public Move create(){
        return new Car();
    }
}

class BoomFactory{
    public Move create(){
        return new Boom();
    }
}

/**
 * 简单工厂扩展性不高。
 * 增加一个交通工具需要修改CreateTool
 * 集合控制起来如果要修改就只能增加+修改
 * 可以对car 来个工厂 对boom来个工厂
 */
public class SimpleFactory {
    public static void main(String[] args) {
        System.out.println("Simple Factory");

        CreateTool createTool = new CreateTool();
        Move m = createTool.createCar();

        m.go();

        // 一种工具一种工厂 只负责加工厂就行了不用在改createTool了
        Move ms = new BoomFactory().create();
        ms.go();
    }
}
